import { defineConfig, type UserConfigExport } from "@tarojs/cli";
import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin";
import devConfig from "./dev";
import prodConfig from "./prod";
import Components from "unplugin-vue-components/vite";
// import ComponentsPlugin from 'unplugin-vue-components/webpack'
import NutUIResolver from "@nutui/auto-import-resolver";
const path = require("path");

// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
export default defineConfig<"vite">(async (merge, { command, mode }) => {
    const baseConfig: UserConfigExport<"vite"> = {
        projectName: "pts-business-m",
        date: "2024-11-4",
        designWidth: 750,
        deviceRatio: {
            640: 2.34 / 2,
            750: 1,
            375: 2,
            828: 1.81 / 2,
        },
        sourceRoot: "src",
        outputRoot: `dist/${process.env.TARO_ENV}/${process.env.NODE_ENV}`,
        plugins: ["@tarojs/plugin-html"],
        defineConstants: {},
        copy: {
            patterns: [],
            options: {},
        },
        framework: "vue3",
        alias: {
            "@": path.resolve(__dirname, "..", "src"),
        },
        compiler: {
          type: 'vite',
          prebundle: { enable: false },
          vitePlugins: [
            Components({
              resolvers: [NutUIResolver({taro: true})]
            })
          ]
        },
        // compiler: 'webpack5',
        mini: {
            postcss: {
                pxtransform: {
                    enable: true,
                    config: {},
                },
                cssModules: {
                    enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
                    config: {
                        namingPattern: "module", // 转换模式，取值为 global/module
                        generateScopedName: "[name]__[local]___[hash:base64:5]",
                    },
                },
            },
        },
        h5: {
            publicPath: "/",
            staticDirectory: "static",

            miniCssExtractPluginOption: {
                ignoreOrder: true,
                filename: "css/[name].[hash].css",
                chunkFilename: "css/[name].[chunkhash].css",
            },
            postcss: {
                autoprefixer: {
                    enable: true,
                    config: {},
                },
                cssModules: {
                    enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
                    config: {
                        namingPattern: "module", // 转换模式，取值为 global/module
                        generateScopedName: "[name]__[local]___[hash:base64:5]",
                    },
                },
            },
        },
        rn: {
            appName: "taroDemo",
            postcss: {
                cssModules: {
                    enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
                },
            },
        },
    };
    if (process.env.NODE_ENV === "development") {
        // 本地开发构建配置（不混淆压缩）
        return merge({}, baseConfig, devConfig);
    }
    // 生产构建配置（默认开启压缩混淆等）
    return merge({}, baseConfig, prodConfig);
});
